function(obj) {
    /**
     * 表格头部工具条公共监听
     * 配置：
     * concurrency: 是否为一次并发多个数据 一般用于批量操作 可能值true、false 默认为false 如删除等
     * pullData: 传输的数据字段 如['id']或'id' 默认为传输全部字段 特例：{'id':'pid'}这样设置是别名设置 这很类似thinkphp的字段别名
     * mutil: 允许选择的数目，默认是无限制。
     * 元素属性title: 这是用于弹窗的标题显示，默认为“提示”
     * 元素属性lay-event: 这是工具的事件，目前支持的事件有ajaxGet、popDialog、pjax、refreshTable
     * 工具事件ajaxGet: 无刷新提交数据，并给予对应的反馈信息。
     * 工具事件popDialog: 弹窗加载
     * 工具事件pjax: 容器无刷新加载，这很类似专业的pjax
     * 工具事件refreshTable: 表格刷新，这只是刷新，不能像官方那样灵活传递数据。
     * @type {Array}
     */
    var sys_event = ['LAYTABLE_COLS', 'LAYTABLE_EXPORT', 'LAYTABLE_PRINT']; // 系统工具
    var event = obj.event;
    if($.inArray(event, sys_event) >= 0 ) {
        return true;
    }
    var table_id = obj.config.id;
    var table = layui.table;
    var checkRow = table.checkStatus(table_id);
    var url = $(this).attr('_href');
    var title = $(this).attr('title');
    var ICY8 = window.ICY8;
    var option = ICY8.str2json($(this).data('option')) || {};
    option.url = url;
    if(!option.data) 
        option.data = {};
    if(!option.layer)
        option.layer = {};
    if(!option.type && $(this).is('a')) {
        // 锚点自动设为get
        option.type = 'get';
    }
    if($(this).attr('title')) {
        option.layer.title = $(this).attr('title');
    }
    var checkLen = endy = checkRow.data.length;
    if(checkLen > 0){
        var i=0, offset= false;
        if(option.mutil) {
            if(checkLen > parseInt(option.mutil)) {
                layui.layer.msg('只能选择 ' + option.mutil + " 条数据", {icon:7,shade:0.3, shadeClose: true});
                return false;
            } else {
                endy = parseInt(option.mutil);
            }
        }
        if(option.layer.offset)
            offset = true;
        var concurrency_flag = {}; // 哑标记 每次执行都重新标记
        for(i=0; i < endy;i++) {
            var rowData = checkRow.data[i];
            // 枚举所有
            // 是否映射字段
            if(typeof option.pullData == 'string'){
                // 字符串形式映射
                var field = option.pullData.split(",");
                for(var k in field) {
                    var key = field[k];
                    if(option.concurrency) {
                        // 数据并发
                        if( !concurrency_flag[key] ){
                            option.data[key] = [];
                            concurrency_flag[key] = 1;
                        }
                        option.data[key].push(rowData[key]);
                    }else {
                        option.data[key] = rowData[key];
                    }
                }
            }else if(typeof option.pullData == 'object') {
                // 对象或数组形式 映射
                for(var k in option.pullData) {
                    var key = option.pullData[k];
                    var value = rowData[option.pullData[k]];
                    if( isNaN(k) ) {
                        // 为对象时允许别名字段
                        value = rowData[k];
                    }
                    if(option.concurrency) {
                        // 数据并发
                        if( !concurrency_flag[key] ) {
                            option.data[key] = [];
                            concurrency_flag[key] = 1;
                        }
                        option.data[key].push(value);
                    } else {
                        option.data[key] = value;
                    }
                }
            }else if(option.pullData !== false) {

                if(option.concurrency) {
                    // 数据并发
                    for(var k in rowData) {
                        var key = k;
                        var value = rowData[k];
                        if(!concurrency_flag[key] ) {
                            option.data[key] = [];
                            concurrency_flag[key] = 1;
                        }
                        option.data[key].push(value);
                    }
                }else {
                    // 默认映射全部字段
                    $.extend(option.data, rowData);
                }
            }
            if(!offset) {
                // option.layer.offset = (i*40)+"px"; // 多窗口叠加偏移
            }
            $(this).data('option', option);
            if(!option.concurrency) 
                window.uilst.initElem(this, obj);// 非数据并发
        }
        if(option.concurrency)
            window.uilst.initElem(this, obj); // 数据并发
    }else if(option.allow_nocheck === true) {
        // 允许未选择
        $(this).data('option', option);
        window.uilst.initElem(this, obj);
    }else if(checkLen <= 0){
        if(option.pullData === false) {
            // 不映射字段时可以点击
            $(this).data('option', option);
            window.uilst.initElem(this, obj);
        }else {
            layui.layer.msg('请选择数据', {icon:7,shade:0.3, shadeClose: true});
        }
        return false;
    }
}